Use IDatabase::getDomainID() instead.
* (T191231) Support for using Oracle or MSSQL as database backends has been
dropped.
-* …
+* MessageCache::destroyInstance() has been removed. Instead, call
+ MediaWikiTestCase::resetServices().
=== Deprecations in 1.34 ===
* The MWNamespace class is deprecated. Use NamespaceInfo.
deprecation above this method is no longer needed/called and should not be
implemented by SearchEngine implementation.
* IDatabase::bufferResults() has been deprecated. Use query batching instead.
+* MessageCache::singleton() is deprecated. Use
+ MediaWikiServices::getMessageCache().
=== Other changes in 1.34 ===
* …
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\Linker\LinkRendererFactory;
use MWException;
+use MessageCache;
use MimeAnalyzer;
use NamespaceInfo;
use ObjectCache;
return $this->getService( 'MediaHandlerFactory' );
}
+ /**
+ * @since 1.34
+ * @return MessageCache
+ */
+ public function getMessageCache() : MessageCache {
+ return $this->getService( 'MessageCache' );
+ }
+
/**
* @since 1.28
* @return MimeAnalyzer
);
},
+ 'MessageCache' => function ( MediaWikiServices $services ) : MessageCache {
+ $mainConfig = $services->getMainConfig();
+ return new MessageCache(
+ $services->getMainWANObjectCache(),
+ ObjectCache::getInstance( $mainConfig->get( 'MessageCacheType' ) ),
+ $mainConfig->get( 'UseLocalMessageCache' )
+ ? $services->getLocalServerObjectCache()
+ : new EmptyBagOStuff(),
+ $mainConfig->get( 'UseDatabaseMessages' ),
+ $mainConfig->get( 'MsgCacheExpiry' ),
+ $services->getContentLanguage()
+ );
+ },
+
'MimeAnalyzer' => function ( MediaWikiServices $services ) : MimeAnalyzer {
$logger = LoggerFactory::getInstance( 'Mime' );
$mainConfig = $services->getMainConfig();
private $loadedLanguages = [];
/**
- * Singleton instance
- *
- * @var MessageCache $instance
- */
- private static $instance;
-
- /**
- * Get the signleton instance of this class
+ * Get the singleton instance of this class
*
+ * @deprecated in 1.34 inject an instance of this class instead of using global state
* @since 1.18
* @return MessageCache
*/
public static function singleton() {
- if ( self::$instance === null ) {
- global $wgUseDatabaseMessages, $wgMsgCacheExpiry, $wgUseLocalMessageCache;
- $services = MediaWikiServices::getInstance();
- self::$instance = new self(
- $services->getMainWANObjectCache(),
- wfGetMessageCacheStorage(),
- $wgUseLocalMessageCache
- ? $services->getLocalServerObjectCache()
- : new EmptyBagOStuff(),
- $wgUseDatabaseMessages,
- $wgMsgCacheExpiry,
- $services->getContentLanguage()
- );
- }
-
- return self::$instance;
- }
-
- /**
- * Destroy the singleton instance
- *
- * @since 1.18
- */
- public static function destroyInstance() {
- self::$instance = null;
+ return MediaWikiServices::getInstance()->getMessageCache();
}
/**
// This is essential and overrides disabling of database messages in TestSetup
$setup['wgUseDatabaseMessages'] = true;
$reset = function () {
- MessageCache::destroyInstance();
+ MediaWikiServices::getInstance()->resetServiceForTesting( 'MessageCache' );
};
$setup[] = $reset;
$teardown[] = $reset;
$this->setMwGlobals( 'wgRawHtml', true );
// We have to reset the core hook registration.
// to register the html hook
- MessageCache::destroyInstance();
$this->overrideMwServices();
$msg = new RawMessage( '<html><script>alert("xss")</script></html>' );
use MediaWiki\Interwiki\InterwikiLookup;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\MediaWikiServices;
-use Wikimedia\TestingAccessWrapper;
/**
* @group Database
$this->setContentLang( 'en' );
}
- protected function tearDown() {
- // For testNewMainPage
- MessageCache::destroyInstance();
- parent::tearDown();
- }
-
/**
* @covers Title::legalChars
*/
* @covers Title::newMainPage
*/
public function testNewMainPage() {
- $msgCache = TestingAccessWrapper::newFromClass( MessageCache::class );
- $msgCache->instance = $this->createMock( MessageCache::class );
- $msgCache->instance->method( 'get' )->willReturn( 'Foresheet' );
- $msgCache->instance->method( 'transform' )->willReturn( 'Foresheet' );
+ $mock = $this->createMock( MessageCache::class );
+ $mock->method( 'get' )->willReturn( 'Foresheet' );
+ $mock->method( 'transform' )->willReturn( 'Foresheet' );
+
+ $this->setService( 'MessageCache', $mock );
$this->assertSame(
'Foresheet',
protected function setUp() {
parent::setUp();
$this->configureLanguages();
- MessageCache::destroyInstance();
MessageCache::singleton()->enable();
}
// let's choose e.g. German (de)
$this->setUserLang( 'de' );
$this->setContentLang( 'de' );
+ $this->resetServices();
}
function addDBDataOnce() {
] );
$this->overrideMwServices();
- MessageCache::destroyInstance();
$messageCache = MessageCache::singleton();
$messageCache->enable();
$importer->import( $importRevision );
// Now, load the message from the wiki page
- MessageCache::destroyInstance();
$messageCache = MessageCache::singleton();
$messageCache->enable();
$messageCache = TestingAccessWrapper::newFromObject( $messageCache );